import * as PIXI from 'pixi.js';
// 默认导出开始按钮构造函数
export default class PlayButton {
    public readonly sprite: PIXI.Sprite;
    private readonly onClick: () => void;
    private readonly activeTexture: PIXI.Texture;
    private readonly disabledTexture: PIXI.Texture;

    constructor(app: PIXI.Application, onClick: () => void) {
        // 拿到点击时的回调函数
        this.onClick = onClick;
        // 创建'活跃状态开始按钮'的纹理
        this.activeTexture = app.loader.resources!.atlas.textures!['BTN_Spin.png'];
         // 创建'禁止状态开始按钮'的纹理
        this.disabledTexture = app.loader.resources!.atlas.textures!['BTN_Spin_d.png'];
        // 创建'活跃状态开始按钮'的图像精灵
        this.sprite = new PIXI.Sprite(this.activeTexture);
        // 调用初始化方法
        this.init(app.screen.width, app.screen.height);
    }

    // 设置开始按钮结束禁止状态的方法
    setEnabled() {
        // 更新'开始按钮'精灵的纹理
        this.sprite.texture = this.activeTexture;
        // 关闭'开始按钮'精灵的交互响应
        this.sprite.interactive = true;
    }

    // 设置开始按钮禁止状态的方法
    setDisabled() {
        // 更新'开始按钮'精灵的纹理
        this.sprite.texture = this.disabledTexture;
        // 关闭'开始按钮'精灵的交互响应
        this.sprite.interactive = false;
    }

    // 初始化方法
    private init(appWidth: number, appHeight: number) {
        // 设置'开始按钮'精灵的位置(默认为'活跃状态')
        this.sprite.x = appWidth - (this.sprite.width + 37.25);
        this.sprite.y = (appHeight - this.sprite.height) / 2;
        // 开启'开始按钮'精灵的交互响应(默认为'活跃状态')
        this.sprite.interactive = true;
        // 如果启用，则鼠标光标悬停在displayObject上时，如果它是交互式的，则使用指针行为 设置此项会将'cursor'属性更改为''pointer'`。
        this.sprite.buttonMode = true;
        // 给'开始按钮'精灵绑定点击时的回调函数
        this.sprite.addListener('pointerdown', this.onClick);
    }
}
